import os
from pathlib import Path

class Config:
    """配置类，包含所有可配置的常量和参数"""


    # -------------------------- 六个同级路径配置 --------------------------
    # 目标源目录1（待处理文件目录1）
    SOURCE_DIR1 = "./原始项目资料文件夹"
    # 目标源目录2（待处理文件目录2）
    SOURCE_DIR2 = "./待插入的PDF文件夹"
    # 内部签字页输出目录
    INTERNAL_SIGN_DIR = "./内部签字页"
    # 已插入签字页的输出目录
    INSERTED_SIGN_DIR = "./已插入签字页"
    # 未插入签字页的输出目录
    UNINSERTED_SIGN_DIR = "./未插入签字页"
    # 日志文件存放目录
    LOG_DIR = "./日志"
    # PDF签字页插入日志文件路径
    LOG_FILE_ORGANIZE_NAME="PDF签字页插入日志.log"
    LOG_FILE_EXTRACT_NAME="内部签字页提取日志.log"


    # 签字页类型列表
    SIGNATURE_TYPES = [
        "申办者签字页",
        "合同研究组织签字页",
        "数据管理与统计分析单位签字页",
        "临床试验单位签字页"
    ]
    
    # 文件主要关键词列表
    MAIN_DOCUMENT_KEYWORDS = [
        "数据管理计划",
        "数据质控计划",
        "填写指南",
        "数据库测试报告",
        "临床数据传输协议",
        "外部数据传输协议",
        "数据导入说明书",
        "数据审核计划",
        "数据审核报告",
        "数据审核会议纪要",
        "数据管理报告",
        "数据质控报告"
    ]

    # 各种申请表关键词列表
    MAIN_APPROVAL_KEYWORDS = [
        "CRF批准表",
        "数据库上线申请表",
        "数据库变更申请表",
        "CRF 批准表"
        
    ]

    # 特殊文件关键词列表
    SPECIAL_KEYWORDS_DVP = ["数据核查计划"]
    SPECIAL_KEYWORDS_LOCKOUT = ["数据库锁定批准表"]


    # 其他关键词列表
    MAIN_OTHER_KEYWORDS = [
        "EDC培训记录",
        "数据审核会议签到表",
        "数据库锁定检查清单",
        "主要研究者签名声明",
        "测试脚本",
        "外部数据一致性核查"
    ]


    POSITION_KEYWORDS = [
        "生物统计师",
        "数据管理员",
        "数据经理",
        "数据库设计员",
        "质量控制"
    ]
  
    # 需要跳过的文件夹
    SKIP_FOLDERS = [
        "项目启动",
        "试验方案及CRF",
        "EDC角色权限管理",
        "数据集移交",
        "受试者eCRF",
        "稽查轨迹",
        "文件移交",
        "测试"
    ]


    
    # 最大处理页数（前N页）
    MAX_PROCESS_PAGES = 15
    
    # 匹配"版本号：X.X"格式，总长度严格7个字符（忽略空格和全角半角差异） 
    DOCUMENT_VERSION_PATTERN = r'[\(\uff08]*\s*版\s*本\s*号\s*[:\uff1a]\s*(\d)\s*\.\s*(\d)\s*[\)\uff09]*'

    # 匹配"X.X/"格式，总长度严格4个字符（忽略空格和全角半角差异）
    APPROVAL_VERSION_PATTERN = r'(\d+)\.(\d+)/'
    
    # 匹配 X/X 格式的页码，忽略空格，且后面不能有其他数据
    PAGE_NUMBER_PATTERN = r'(?<=[\s\xA0)）])\s*(\d+)\s*/\s*(\d+)\s*(?![\d-])'

        # 图像尺寸阈值（可根据实际需求调整）
    SIZE_THRESHOLD = 100000  # 100000像素（宽×高）

    # A4标准尺寸（单位：点，1点=1/72英寸）
    A4_WIDTH = 595
    A4_HEIGHT = 842


